package day4;

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {

    }
}

//class Solution {
//    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
//        //先求nums1+nums2的和
//        HashMap<Integer, Integer> ABmap = new HashMap<>();
//        for (int i = 0; i < nums1.length; i++) {
//            for (int j = 0; j < nums2.length; j++) {
//                int tempSum=nums1[i]+nums2[j];
//                if (ABmap.containsKey(tempSum)) {
//                    ABmap.put(tempSum,ABmap.get(tempSum)+1);
//                }else {
//                    ABmap.put(tempSum,1);
//                }
//            }
//        }
//        //再求nums3+nums4的和
//        HashMap<Integer, Integer> CDmap = new HashMap<>();
//        for (int i = 0; i < nums3.length; i++) {
//            for (int j = 0; j < nums4.length; j++) {
//                int tempSum=nums3[i]+nums4[j];
//                if (CDmap.containsKey(tempSum)) {
//                    CDmap.put(tempSum,CDmap.get(tempSum)+1);
//                }else {
//                    CDmap.put(tempSum,1);
//                }
//            }
//        }
//        //看ABmap与CDmap的和是否为0、并求次数
//        int count=0;
//        for (Map.Entry<Integer, Integer> ABentry : ABmap.entrySet()) {
//            for (Map.Entry<Integer, Integer> CDentry : CDmap.entrySet()) {
//                if (ABentry.getKey() + CDentry.getKey() == 0) {
//                    count+=ABentry.getValue()*CDentry.getValue();
//                    break;
//                }
//            }
//        }
//        return count;
//    }
//}

//法二
class Solution {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        //先求nums1+nums2的和
        HashMap<Integer, Integer> ABmap = new HashMap<>();
        for (int i = 0; i < nums1.length; i++) {
            for (int j = 0; j < nums2.length; j++) {
                int tempSum=nums1[i]+nums2[j];
                if (ABmap.containsKey(tempSum)) {
                    ABmap.put(tempSum,ABmap.get(tempSum)+1);
                }else {
                    ABmap.put(tempSum,1);
                }
            }
        }
        //再求nums3+nums4的和、并判断与ABmap相加是否为0
        int count=0;
        for (int i = 0; i < nums3.length; i++) {
            for (int j = 0; j < nums4.length; j++) {
                int tempSum=nums3[i]+nums4[j];
                int target=0-tempSum;
                if (ABmap.containsKey(target)) {
                    count+=ABmap.get(target);
                }
            }
        }
        return count;
    }
}
